/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.jjsoft.celularessuc.gco.neg;

import com.jjsoft.celularessuc.gco.dao.GenericController;
import com.jjsoft.celularessuc.gco.mdl.DeudaCliente;
import com.jjsoft.celularessuc.gco.mdl.DeudaClienteAbono;
import com.jjsoft.celularessuc.gco.mdl.Mensualidad;
import com.jjsoft.celularessuc.gco.util.CNumeros;
import com.jjsoft.celularessuc.gco.util.configuraciones;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author javila
 */
public class MensualidadManager {

    GenericController<Mensualidad> controladorMensualidad = new GenericController<Mensualidad>();
    
    public void registrarPagos(List<Mensualidad> mensualidades, DeudaCliente deuda) {
        DeudaClienteAbonoManager dcam = new DeudaClienteAbonoManager();
        Date d = new Date();
        for (Mensualidad mensualidad : mensualidades) {
            try {
                controladorMensualidad.edit(mensualidad);
                if(!mensualidad.getEstado()&&mensualidad.getCouta()>0)
                {
                    DeudaClienteAbono pago = new DeudaClienteAbono();
                    pago.setAbono(mensualidad.getCapital());
                    pago.setDescripcion("Pago de: " + CNumeros.Formato(mensualidad.getCouta())+" por concepto de mensualidad de "+mensualidad.getFechaPago().toLocaleString().split(" ")[0]);
                    if(d.compareTo(mensualidad.getFechaPago())>0)
                    {
                        pago.setDescripcion(pago.getDescripcion()+" MENSUALIDAD VENCIDA");
                    }
                    pago.setFecha(d.toLocaleString().split(" ")[0]);
                    pago.setIdDeuda(deuda);
                    pago.setNickUsuario(configuraciones.getInstance().getUsuario());
                    dcam.registrarPago(pago);
                }
            } catch (Exception ex) {
                Logger.getLogger(MensualidadManager.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
    
    public List<Mensualidad> listarPagos(DeudaCliente deuda) {
        return controladorMensualidad.findWhere(new Mensualidad(), "id_deuda=" + deuda.getIdDeuda() + " and estado=TRUE order by numpago");
    }
    
    public int getMensualidadesVencidas(DeudaCliente deuda)
    {
        return controladorMensualidad.findWhere(new Mensualidad(), "id_deuda="+deuda.getIdDeuda()+" and estado=TRUE and fecha_pago < current_date").size();
    }
}
